perm filename L1[F8,ALS] blob
sn#310378 filedate 1977-10-20 generic text, type T, neo UTF8
1 *CHECKERS as of October 20 1977. EQU's
2 * S1 section
3 *Resident package addresses
4 JOYT EQU H'0C00'
5 LINE EQU H'0FDF'
6 SHCB EQU H'0FE2'
7 INPF EQU H'0FE3'
8 WTLN EQU H'0FE5'
9 TXC EQU H'0FE8'
10 CMRG EQU H'0FEA'
11 DBNC EQU H'0FEB'
12 UPI EQU H'0FFA'
13 JOYI EQU H'21AD'
14 IJS EQU H'22DB'
15 SHL EQU H'27C6'
16 SHR EQU H'27D3'
17 PUSH EQU H'40A9'
18 POPS EQU H'40BC'
19 SPS EQU H'40D0'
20 WDG EQU H'4105'
21 WAUD EQU H'41C8'
22 WAU1 EQU H'41CC'
23 CDS EQU H'41D5'
24 WMS EQU H'4205'
25 UDAT EQU H'424D'
26 TRAN EQU H'43CD'
27 FCS EQU H'43D6'
28 WAIT EQU H'4501'
29 TIR EQU H'45DB'
30 CLER EQU H'4762'
31 *Misc. constants
32 TCMD EQU H'44'
33 BCMD EQU H'6D'
34 TCOL EQU H'80' TEXT COLOR
35 ULIN EQU H'F5'
36 COM EQU H'8F7'
37 *RAM assignments
38 PLY0 EQU H'0C20' Place for player's ply depth choice
39 COL0 EQU H'0C21' Place for color choice(next after P
40 SELX EQU H'0C22' SELE exit
41 XPOS EQU H'0C23' XPOSITION(CURSOR)
42 YPOS EQU H'0C26' YPOSITION(CURSOR)
43 BFLG EQU H'0C27'
44 BLNF EQU H'0C28' Blink flag
45 XBLN EQU H'0C29' X value to blink
46 YBLN EQU H'0C2A' Y value to blink
47 BCNT EQU H'0C2B' Counter used in OKMV
48 BKMV EQU H'0C2C' Data to index book moves
49 OBJ0 EQU H'0C30' Board 1, thru H'0E0F'
50 TREE EQU H'0E10' Tree data, thru H'0EFF', Player's b
51 TRE2 EQU H'0E20' Machine's first board here
52 TRE3 EQU H'0E30' PLY 1 LOCATION
53 HSAV EQU H'0E59' H save location
54 PLMD EQU H'0E5B' Used for temp store of player's mov
55 PLMV EQU H'0ED0' Overlay region used for player's mo
56 PLMF EQU H'0EE0' and move numbers
57 MOBS EQU H'0F00' Mobility and DJ flags (14 bytes)
58 OBJ1 EQU H'0F10' Board 2, thru H'0FAF'
59 *Scratch pad assignments
60 TEMP EQU H'8'
61 J EQU H'9'
62 HU EQU H'A'
63 HL EQU H'B'
64 PLOC EQU O'3' LISU value for ACTIVE and PASSIVE
65 KLOC EQU O'4' LISU value for KING's and special d
66 ELOC EQU O'5' LISU value for EMPTY's area
67 ISA EQU O'30' ISAR value for active area
68 ISP EQU O'34' ISAR value for passive
69 ISK EQU O'40' ISAR value for kings
70 ISE EQU O'51' ISAR value foempty (with offset)
71 *Mimimum ply depths
72 PLYT EQU H'FE' Ply depth for Robot Tom (stored as
73 PLYD EQU H'FD' Ply depth for Robot Dick
74 PLYH EQU H'FC' Ply depth for Robot Harry
75 *SPECIAL CONSTANTS
76 MSK EQU H'1' X ZOOM bit mask (cmrg)
77 X EQU H'1'
78 Y EQU H'2'
79 VX EQU H'3'
80 VY EQU H'4'
81 CHT EQU H'3' CURSOR HEIGHT
82 YTST EQU H'9'
83 XZOP EQU H'34' Line for restore of X zoom
84 MAXY EQU H'4D' MAX Y COORD (=H'4F'-CHT)
85 *Linkage locations
86 SEL2 EQU H'1900'
87 ORG H'1000' Initial operations and questions
88 1000 AA DC H'AA'
89 1001 55 DC H'55'
90 1002 00 DC H'00' BACKGROUND COLOR
91 1003 00 DC H'00' BACKGROUND COLOR
92 1004 00 DC H'00' SPACES
93 1005 00 DC H'00' SPACES
94 1006 31 19 DC H'3119' CH
95 1008 0B 31 DC H'0B31' EC
96 100A 15 0B DC H'150B' KE
97 100C 09 21 DC H'0921' RS
98 100E 00 DC H'00' -
99 100F 00 DC H'00' -
100 1010 00 DC H'00' -
101 1011 00 DC H'00' -
102 *-*-
103 1012 28 41 D5 PI CDS CLEAR DISPLAY
104 1015 28 22 DB PI IJS INITIALIZE JOYSTICK TABLE
105 1018 62 LISU 2 For safety only, can be removed later
106 1019 6E LISL 6
107 101A 70 CLR
**OPERATOR SYNTAX LINE # 108
108
109 101B EC XS S
110 101C 91 06 BM QN1 Is clock running?
111 101E 20 81 LI H'81' No, so start it
112 1020 5E LR D,A
113 1021 72 LIS 2
114 1022 5C LR S,A
115 *-*-*-*- Initial question session
116 1023 74 QN1 LIS H'4'
117 1024 50 LR 0,A
118 1025 28 13 DE PI SEDC SET MESSAGE LNGTH&LINE POINTER
119 1028 31 DS 1
120 1029 31 DS 1 SET DEFAULT PLY DEPTH
121 102A 2A 15 EE DCI SKL
122 102D 28 42 05 PI WMS WRITE MESSAGE
123 1030 28 12 CC PI RKB AND DO KEYBOARD READ
124 1033 25 1F CI H'1F'
125 1035 84 06 BZ QN10 IS IT 'DICK'?
126 1037 25 19 CI H'19' NO.
127 1039 94 03 BNZ QN11 IF NOT 'HARRY', THEN 'TOM'
128 103B 31 DS 1
129 103C 31 QN10 DS 1
130 103D 2A 0C 20 QN11 DCI PLY0
131 1040 41 LR A,1 GET CORRECT PLY DEPTH
132 1041 17 ST AND SAVE IT.
133 1042 30 DS 0
134 1043 30 DS 0 SET FOR BUT TWO LINES
135 1044 28 41 D5 PI CDS CLEAR DISPLAY
136 1047 28 13 DE PI SEDC SET LINE POINTER
137 104A 20 FA LI H'FA'
138 104C CC AS S
139 104D 5C LR S,A SET FOR BUT H'1A' LENGTH
140 104E 2A 15 D4 DCI YMF DCO TO MESSAGE START
141 1051 28 42 05 PI WMS SO WRITE MESSAGE
142 1054 28 12 CC PI RKB READ KEYBOARD
143 1057 25 2B CI H'2B' Is answer an N?
144 1059 2A 0C 21 DCI COL0
145 105C 70 CLR
146 105D 57 LR 7,A Black plays first always
147 105E 84 07 BZ QN13 N means machine first
148 1060 18 COM
149 1061 17 ST COL0←-1, player is black
150 1062 18 COM
151 1063 17 ST SELX←0 always
152 1064 90 03 BR QN14
153 1066 17 QN13 ST COL0←0, machine is black
154 1067 17 ST SELX←0 always
155 1068 2A 12 E0 QN14 DCI BLKM Table of possible moves
156 106B 2C XDC
157 106C 2A 0E D0 DCI PLMV List to verify moves
158 106F 77 LIS H'7'
159 1070 62 LISU 2
160 1071 68 LISL 0
161 1072 5C LR S,A SET TRANSFER COUNT
162 1073 28 43 CD PI TRAN DO TRANSFER
163 1076 2A 0C 2C DCI BKMV
164 1079 70 CLR
165 107A 17 ST Clear Book move index value
166 107B 2A 0F EA DCI CMRG
167 107E 20 65 LI H'65'
168 1080 17 ST SET FOR X & Y ZOOM
169 1081 28 47 62 PI CLER TURN OFF CURRENT OBJECTS
170 1084 28 13 B3 PI SURP SET UM1 REGS AND POINTERS
171 1087 28 16 F9 PI ENIN
172 *-*-*- Load SC for initial board
173 108A 63 LISU PLOC LOAD SCRATCHPAD AS
174 108B 6F LISL 7 FOLLOWS:
175 108C 70 CLR
176 108D 5E BRDJ LR D,A O'30'=FF
177 108E 8F FE BR7 BRDJ O'31'=F0
178 1090 18 COM O'32'=0
179 1091 5D LR I,A O'33'=0
180 1092 5D LR I,A O'34'=0
181 1093 15 SL 4 O'35'=0
182 1094 5D LR I,A O'36'=F
183 1095 6E LISL 6 O'37'=FF
184 1096 7F LIS H'F'
185 1097 5D LR I,A
186 1098 64 LISU KLOC
187 1099 6F LISL H'7'
188 109A 70 CLR
189 109B 5E BRDK LR D,A O'40' thru O'47' = 0
190 109C 8F FE BR7 BRDK
191 109E 6E LISL 6 Except
192 109F 20 80 LI H'80' O'46' to contain H'80'
193 10A1 5C LR S,A
194 10A2 2A 0E 20 DCI TRE2
195 10A5 28 17 28 PI SCRD SR to RAM for machine's first move
196 10A8 2A 0E 10 DCI TREE
197 10AB 28 17 28 PI SCRD SR to RAM for player's first move
198 10AE 28 13 00 PI BORD Generate board image with men
199 10B1 2A 0C 23 DCI XPOS
200 10B4 70 LIS H'0'
201 10B5 17 ST SET FOR LEFT MOST
202 10B6 20 03 LI H'3'
203 10B8 17 ST
204 10B9 70 LIS H'0'
205 10BA 17 ST
206 10BB 2A 0C 26 DCI YPOS
207 10BE 70 LIS H'0'
208 10BF 17 ST AND SET FOR TOPMOST
209 *-*-*-*-*-*-*-*-*-*- Start play
210 10C0 2A 0C 21 DCI COL0
211 10C3 70 CLR
212 10C4 8C XM
213 10C5 91 3A BM PMOV Player chose Black
214 *-*-*- Machine's first move if playing black
215 10C7 62 LISU 2
216 10C8 6D LISL 5
217 10C9 4C LR A,S Used as random number
218 10CA 21 07 NI H'7' Save last 3 bits
219 10CC 50 LR 0,A Use this number to select move
220 10CD 2A 0C 2C DCI BKMV Book move index
221 10D0 15 SL 4 Save space for second move
222 10D1 12 SR 1
223 10D2 17 ST Record first move
224 10D3 2A 0E D0 DCI PLMV
225 10D6 16 QN17 LM Get byte record
226 10D7 51 LR 1,A
227 10D8 41 QN18 LR A,1
228 10D9 F1 NS 1
229 10DA 94 04 BNZ QN19 Is this byte exhausted?
230 10DC 16 LM Step over byte info
231 10DD 90 F8 BR QN17 Go to next byte record
232 10DF 52 QN19 LR 2,A
233 10E0 24 FF AI H'FF' Subtract 1
234 10E2 F1 NS 1
235 10E3 51 LR 1,A byte less rightmost bit
236 10E4 E2 XS 2 This leaves 1 bit in A
237 10E5 30 DS 0
238 10E6 81 F1 BP QN18
239 10E8 56 LR 6,A Save the byte bit
240 10E9 16 LM Get the byte info
241 10EA 54 LR 4,A The byte indicator
242 10EB 2A 0E 20 DCI TRE2 Machine's board is here
243 10EE 11 LR H,DC
244 10EF 7C LIS H'C'
245 10F0 8E ADC
246 10F1 46 LR A,6
247 10F2 17 ST
248 10F3 44 LR A,4
249 10F4 17 ST
250 10F5 29 19 00 JMP SEL2 Go to SELE to make move
251 ORG H'1100' PMOV Player's move
252 1100 28 15 0A PMOV PI MVC Initiate cursor
253 1103 2A 0E 10 DCI TREE Player's board is here
254 1106 11 LR H,DC
255 1107 70 MES0 CLR "YOUR MOVE"
256 1108 50 MES1 LR 0,A Identify message
257 1109 28 12 00 PI WMC Write message
258 110C 2A 0C 28 DCI BLNF
259 110F 70 CLR
260 1110 17 ST
261 1111 10 LR DC,H
262 1112 28 13 FB CUR1 PI CURS Initiate cursor
263 *-*- Now X in 1, Y in 2, byte in 3 and byte # in 4
264 1115 2A 0E D0 OKPI DCI PLMV Possible moves listing
265 1118 16 OKP1 LM Get move byte
266 1119 21 FF NI H'FF'
267 111B 94 0A BNZ OKP3 An entry found
268 111D 45 LR A,5 Byte info
269 111E 21 10 NI H'10' Extract J bit
270 1120 75 LIS H'5' "PIECE CAN'T MOVE"
271 1121 84 02 BZ OKP2
272 1123 71 LIS H'1' "MUST JUMP"
273 1124 90 E3 OKP2 BR MES1 Try again
274 1126 F3 OKP3 NS 3 Compare
275 1127 94 05 BNZ OKP4 This might be the one
276 1129 16 LM A cheap way to index
277 112A 55 LR 5,A Save for jump info
278 112B 90 EC BR OKP1 Try again
279 112D 16 OKP4 LM Next entry is the byte info
280 112E 55 LR 5,A Save it
281 112F 12 SR 1
282 1130 12 SR 1
283 1131 21 03 NI H'3' Remove the J bit and the direction
284 1133 E4 XS 4 Does it match?
285 1134 94 E3 BNZ OKP1 Try again
286 1136 2A 0E 5B DCI PLMD Save data as to starting square
287 1139 41 LR A,1 X
288 113A 17 ST
289 113B 42 LR A,2 Y
290 113C 17 ST
291 113D 43 LR A,3 Byte
292 113E 17 ST
293 113F 44 LR A,4 Byte info
294 1140 17 ST
295 1141 20 FC LI -H'4'
296 1143 2A 0C 2B DCI BCNT Counter
297 1146 17 ST
298 1147 2A 0C 28 DCI BLNF Blink flag
299 114A 71 LIS H'1' Set on
300 114B 17 ST
301 114C 41 LR A,1 Save X value
302 114D 17 ST in XBLN
303 114E 42 LR A,2 Save Y value
304 114F 17 ST in YBLN
305 1150 28 13 FB CUR2 PI CURS USE CTMP TO DEBUG
306 1153 2A 0E 5D DCI PLMD+2 Restore initial values
307 1156 16 LM
308 1157 53 LR 3,A for BYTE
309 1158 16 LM
310 1159 54 LR 4,A and BYTE number
311 *Now test indicated move for legality
312 115A 2A 0E 5B OKMV DCI PLMD Saved data location
313 115D 16 LM Get the old X value
314 115E 18 COM
315 115F 1F INC
316 1160 C1 AS 1 This gives us the change in X
317 1161 84 6D BZ NON2 Illegal
318 1163 51 LR 1,A Save the difference
319 1164 81 03 BP OKM1
320 1166 18 COM
321 1167 1F INC
322 1168 50 OKM1 LR 0,A |∂X|
323 1169 25 02 CI H'2'
324 116B 91 66 BM NON3 Too far
325 116D 70 CLR Anticipate normal move
326 116E 94 03 BNZ OKM2
327 1170 20 10 LI H'10' Set Jump bit
328 1172 56 OKM2 LR 6,A save byte info here
329 1173 16 LM Get the old Y value
330 1174 18 COM
331 1175 1F INC
332 1176 C2 AS 2
333 1177 52 LR 2,A Change in Y
334 1178 91 03 BM OKM3
335 117A 18 COM
336 117B 1F INC
337 117C C0 OKM3 AS 0
338 117D 94 51 BNZ NON2 |∂X|≠|∂Y|
339 117F 42 LR A,2
340 1180 F2 NS 2
341 1181 81 04 BP OKM4
342 1183 72 LIS H'2' Backward bit
343 1184 C6 AS 6
344 1185 56 LR 6,A
345 1186 41 OKM4 LR A,1
346 1187 F1 NS 1
347 1188 91 04 BM OKM5
348 118A 71 LIS H'1' Left bit
349 118B C6 AS 6
350 118C 56 LR 6,A
351 118D 44 OKM5 LR A,4 Get initial Byte #
352 118E 13 SL 1 Shift it left to position
353 118F 13 SL 1
354 1190 C6 AS 6 Add in the J and Direction bits
355 1191 56 LR 6,A Final byte info from cursor
356 1192 2A 0E D0 DCI PLMV Possible moves listing
357 1195 78 LIS H'8' 7 moves possible
358 1196 50 LR 0,A
359 1197 70 OKM6 CLR
360 1198 8C XM
361 1199 84 2C BZ NONO No more entries
362 119B 51 LR 1,A
363 119C 16 LM
364 119D 55 LR 5,A Save byte info
365 119E 70 OKM7 CLR
366 119F E1 XS 1
367 11A0 84 F6 BZ OKM6 Last bit tested
368 11A2 52 LR 2,A We'll need it again
369 11A3 24 FF AI H'FF' Subtract 1
370 11A5 F1 NS 1
371 11A6 51 LR 1,A Byte with bit removed
372 11A7 E2 XS 2 Get extracted bit
373 11A8 30 DS 0 Count tries
374 11A9 F3 NS 3 Does it check with 3
375 11AA 84 F3 BZ OKM7 Not in table entry, try again
376 11AC 45 LR A,5 But does byte info agree?
377 11AD E6 XS 6 Compare 6 with table value
378 11AE 94 EF BNZ OKM7 No so count remaining bits in 1
379 11B0 77 LIS H'7' Found, so reorder count
380 11B1 E0 XS 0 order from 0 thru 6
381 11B2 2A 0C 2C DCI BKMV
382 * LR Q,DC 3 inst. to go in with 3rd book move fix
383 * OM Save info in left half, if any
384 * LR DC,Q
385 11B5 17 ST Save move count for book move entr
386 11B6 2A 0E 10 DCI TREE Store final values
387 11B9 11 LR H,DC
388 11BA 7C LIS H'C'
389 11BB 8E ADC
390 11BC 43 LR A,3
391 11BD 17 ST Store byte
392 11BE 46 LR A,6
393 11BF 17 ST And byte info
394 11C0 28 15 0A PI MVC Turn off cursor
395 11C3 29 19 00 JMP SEL2
396 11C6 45 NONO LR A,5
397 11C7 21 10 NI H'10' A jump required?
398 11C9 72 LIS H'2'
399 11CA 84 08 BZ NON4
400 11CC 71 LIS H'1'
401 11CD 90 05 BR NON4
402 11CF 72 NON2 LIS H'2'
403 11D0 90 02 BR NON4
404 11D2 73 NON3 LIS H'3'
405 11D3 50 NON4 LR 0,A
406 11D4 2A 0C 2B DCI BCNT
407 11D7 16 LM
408 11D8 1F INC
409 11D9 2A 0C 2B DCI BCNT
410 11DC 17 ST
411 11DD 91 04 BM NON5
412 11DF 29 11 07 JMP MES0
413 11E2 28 12 00 NON5 PI WMC
414 11E5 29 11 50 JMP CUR2
415 ORG H'1200' WMC RKB BLKM REDM
416 *-*-*- Message writing, uses R0, 1, SC O'24'
417 * calls UPDATE routine. Message # in 0.
418 1200 08 WMC LR K,P SAVE RETURN ADDRESS
419 1201 28 40 A9 PI PUSH PUSH ONTO STACK
420 1204 28 17 16 PI DAI DISABLE INTERRUPTS
421 1207 2A 08 72 DCI H'872'
422 120A 20 82 LI H'82'
423 120C 17 ST
424 120D 2A 0E 59 DCI HSAV
425 1210 4A LR A,HU
426 1211 17 ST
427 1212 4B LR A,HL
428 1213 17 ST
429 1214 28 16 2E PI MWAD WAIT, THEN UPDATE
430 1217 2A 12 62 DCI WMCA DCO TO MESSAGE ADDRESS START
431 121A 40 LR A,0 GET MESSAGE NUMBER
432 121B 13 SL 1
433 121C C0 AS 0
434 121D 8E ADC ADD 3XNUMBER TO DCO
435 121E 62 LISU 2
436 121F 6C LISL 4 SET ISAR TO O'24'
437 1220 16 LM
438 1221 5C LR S,A SET MESSAGE LENGTH
439 1222 16 LM
440 1223 06 LR QU,A
441 1224 16 LM
442 1225 07 LR QL,A MESSAGE ADDRESS INTO Q
443 1226 2A 0F DF DCI LINE
444 1229 20 50 LI H'50'
445 122B 17 ST SET PROPER LINE NUMBER
446 122C 2A 0E 5F DCI H'0E5F' DCO TO MESSAGE BUILD AREA
447 122F 20 70 LI H'70'
448 1231 51 LR 1,A SET COUNTER
449 1232 70 CLR CLEAR ACC
450 1233 17 WMC1 ST
451 1234 31 DS 1
452 1235 94 FD BNZ WMC1 CLEAR TEXT AREA
453 1237 28 16 2E PI MWAD WAIT, THEN DO UPDATE
454 123A 2A 08 72 DCI H'872'
455 123D 72 LIS H'2'
456 123E 17 ST TURN OBJECT ON
457 123F 0F LR DC,Q SET ADDRESS INTO DCO
458 1240 28 42 05 PI WMS WRITE MESSAGE
459 1243 28 16 2E PI MWAD WAIT, THEN UPDATE
460 1246 40 LR A,0 Get message #
461 1247 25 05 CI H'5'
462 1249 81 07 BP WMC2 Does not require #
463 124B 4B LR A,HL
464 124C 14 SR 4
465 124D 58 LR TEMP,A
466 124E 28 41 05 PI WDG Write single digit
467 1251 28 16 2E WMC2 PI MWAD
468 1254 2A 0E 59 DCI HSAV
469 1257 16 LM
470 1258 5A LR HU,A
471 1259 16 LM
472 125A 5B LR HL,A
473 125B 28 16 F9 PI ENIN ENABLE INTERRUPTS ONCE MORE
474 125E 28 40 BC PI POPS POP RETURN ADDRESS
475 1261 0C PK AND RETURN
476 *-*-*-*-*-*-*-*-*-*
477 * DATA FOR WMC
478 *
479 1262 0A WMCA DC H'A' YOUR MOVE! 0
480 1263 12 DC YRMV:
481 1264 7D DC YRMV.
482 1265 0A DC H'A' MUST JUMP 1
483 1266 12 DC MJM:
484 1267 87 DC MJM.
485 1268 0D DC H'D' ILLEGAL MOVE 2
486 1269 12 DC MIM:
487 126A 91 DC MIM.
488 126B 08 DC H'8' TOO FAR 3
489 126C 12 DC TFM:
490 126D 9E DC TFM.
491 126E 07 DC H'7' MY MOVE 4
492 126F 12 DC MYMV:
493 1270 A6 DC MYMV.
494 1271 10 DC H'10' PIECE CANNOT MOVE 5
495 1272 12 DC PCMM:
496 1273 AD DC PCMM.
497 1274 05 DC H'5' SELE 6
498 1275 12 DC SELM:
499 1276 BD DC SELM.
500 1277 05 DC H'5' SELY 7
501 1278 12 DC SELY:
502 1279 C2 DC SELY.
503 127A 05 DC H'5' FIND 8
504 127B 12 DC FINM:
505 127C C7 DC FINM.
506 127D 05 13 YRMV DC H'0513' YOur move
507 127F 03 09 DC H'0309' UR
508 1281 00 DC H'0' SPACE
509 1282 29 13 DC H'2913' MO
510 1284 2F 0B DC H'2F0B' VE
511 1286 04 DC H'04' !
512 1287 29 0B MJM DC H'290B' MUst jump
513 1289 21 07 DC H'2107' ST
514 128B 00 DC H'0' SPACE
515 128C 17 03 DC H'1703' JU
516 128E 29 25 DC H'2925' MP
517 1290 04 DC H'04' !
518 1291 01 27 MIM DC H'0127' ILlegal move
519 1293 27 0B DC H'270B' LE
520 1295 1B 11 DC H'1B11' GA
521 1297 27 00 DC H'2700' L SPACE
522 1299 29 13 DC H'2913' MO
523 129B 2F 0B DC H'2F0B' VE
524 129D 04 DC H'04' !
525 129E 07 13 TFM DC H'0713' TO far
526 12A0 13 00 DC H'1300' O SPACE
527 12A2 1D 11 DC H'1D11' FA
528 12A4 09 04 DC H'0904' R!
529 12A6 29 05 MYMV DC H'2905' MY move
530 12A8 00 DC H'0' -
531 12A9 29 13 DC H'2913' MO
532 12AB 2F 0B DC H'2F0B' VE
533 12AD 25 01 PCMM DC H'2501' PIece can't move
534 12AF 0B 31 DC H'0B31' EC
535 12B1 0B 00 DC H'0B00' E SPACE
536 12B3 31 11 DC H'3111' CA
537 12B5 2B 39 DC H'2B39' N'
538 12B7 07 00 DC H'0700' T SPACE
539 12B9 29 13 DC H'2913' MO
540 12BB 2F 0B DC H'2F0B' VE
541 12BD 21 0B SELM DC H'210B' SEle
542 12BF 27 0B DC H'270B' LE
543 12C1 00 DC H'0' -
544 12C2 21 0B SELY DC H'210B' SEly
545 12C4 27 05 DC H'2705' LY
546 12C6 00 DC H'0' -
547 12C7 1D 01 FINM DC H'1D01' FInd
548 12C9 2B 1F DC H'2B1F' ND
549 12CB 00 DC H'0' -
550 *-*-*- Read keyboard
551 12CC 08 RKB LR K,P Read keyboard
552 12CD 28 40 A9 PI PUSH
553 12D0 62 LISU 2
554 12D1 6C LISL 4 SET ISAR FOR DELAY TIMER
555 12D2 70 LIS H'0'
556 12D3 5C LR S,A SET FOR MAX DELAY
557 12D4 28 43 D6 RKB1 PI FCS FETCH CHARACTER
558 12D7 84 FC BZ RKB1 NULL INPUT?
559 12D9 91 FA BM RKB1 NO. DEBOUNCED INPUT?
560 12DB 28 40 BC PI POPS YES. POP RETURN ADDRESS
561 12DE 48 LR A,8 GET KEYBOARD INPUT
562 12DF 0C PK AND RETURN
563 *-*-*- Initial moves for black
564 12E0 F0 BLKM DC B'11110000' 4 pieces
565 12E1 04 DC B'00000100' Byte 1, RF
566 12E2 E0 DC B'11100000' 3 pieces
567 12E3 05 DC B'00000101' Byte 1, LF
568 12E4 40 DC B'01000000' 11-15 repeat to give
569 12E5 04 DC B'00000100' a slight preference
570 12E6 00 DC H'00'
571 *-*-*- Initial moves for red
572 12E7 07 REDM DC B'00000111' 3 pieces
573 12E8 0A DC B'00001010' Byte 2, RB
574 12E9 0F DC B'00001111' 4 pieces
575 12EA 0B DC B'00001011' Byte 2, LB
576 12EB 00 DC H'00'
577 ORG H'1300' BORD
578 *-*-*- Generate board image
579 1300 08 BORD LR K,P
580 1301 20 FF LI H'FF'
581 1303 53 LR 3,A REG3=FF
582 1304 2A 0C 30 DCI OBJ0 BRD1 START ADDRESS
583 1307 72 LIS H'2' FLAG FOR BOR
584 1308 54 LR 4,A SET REG 4 = 2
585 1309 76 LIS H'6'
586 130A 50 BRD4 LR 0,A REG0 = 6 ROWS
587 130B 7A BRD3 LIS H'A'
588 130C 51 LR 1,A REG 1 = 10 LINE/ROW
589 130D 74 BRD2 LIS H'4'
590 130E 52 LR 2,A REG2=SQ PAIRS/ROW
591 130F 43 BRD1 LR A,3
592 1310 17 ST STORE IN BRD
593 1311 18 COM
594 1312 17 ST NEXT IS COMPL. OF FIRST
595 1313 32 DS 2
596 1314 94 FA BNZ BRD1 MORE FOR THIS ROW
597 1316 31 DS 1 NO, ALL LINE DONE
598 1317 94 F5 BNZ BRD2
599 1319 43 LR A,3 DONE A TIMES YET
600 131A 18 COM
601 131B 53 LR 3,A
602 131C 30 DS 0 DEC ROW COUNT
603 131D 94 ED BNZ BRD3 ALL ROWS DONE?
604 131F 34 DS 4
605 1320 84 07 BZ BRD5 BOTH OBJECTS DONE?
606 1322 2A 0F 10 DCI OBJ1 NO,GET BORD2 ADDRS.
607 1325 72 LIS H'2'
608 1326 90 E3 BR BRD4 REG0=2
609 *-*-*- Now put pieces in image
610 1328 63 BRD5 LISU 3 Pieces are here
611 1329 71 LIS H'1' 1 for red pieces (stored first)
612 132A 54 LR 4,A Piece, (1 Red, 0 Black, -1 King)
613 132B 2A 0C 21 DCI COL0
614 132E 70 CLR CLEAR ACC
615 132F 8C XM IN W/STATUS
616 1330 50 LR 0,A
617 1331 6F LISL O'7' Decrement and shift right
618 1332 94 02 BNZ MEN1 if COL0 is FF (BLACK at bottom of
619 1334 68 LISL O'0' Increment and shift left
620 1335 73 MEN1 LIS H'3' if COL0 is 0 (Black at top of scr
621 1336 51 LR 1,A To count bytes
622 1337 2B NOP
623 1338 2B NOP
624 1339 2B NOP
625 133A 2B NOP
626 133B 77 MEN2 LIS H'7'
627 133C 52 LR 2,A To count bits
628 133D 2A 15 B3 DCI TAB1 Byte location table
629 1340 41 LR A,1 This byte number
630 1341 13 SL 1 Locations occupy 2 bytes each
631 1342 8E ADC
632 1343 16 LM Get the byte location
633 1344 06 LR QU,A and save it in Q
634 1345 16 LM
635 1346 07 LR QL,A
636 1347 40 LR A,0
637 1348 F0 NS 0
638 1349 94 11 BNZ MEN5 Decrement and shift right if COL0
639 134B 4D LR A,I Increment and shift left if COL0 i
640 134C 2B NOP
641 134D 2B NOP
642 134E 2B NOP
643 134F 2B NOP
644 1350 90 03 BR MEN4
645 1352 43 MEN3 LR A,3
646 1353 13 SL 1 and shift left
647 1354 53 MEN4 LR 3,A
648 1355 21 80 NI H'80' (done this way for symry
649 1357 84 3E BZ MEN9
650 1359 90 0F BR MEN8
651 135B 4E MEN5 LR A,D Decrement if COL0 is FF
652 135C 2B NOP
653 135D 2B NOP
654 135E 2B NOP
655 135F 2B NOP
656 1360 90 03 BR MEN7
657 1362 43 MEN6 LR A,3
658 1363 12 SR 1 and shift right
659 1364 53 MEN7 LR 3,A
660 1365 21 01 NI H'1'
661 1367 84 2E BZ MEN9
662 1369 2A 15 BB MEN8 DCI TAB2 Relative-locations-of-squares tabl
663 136C 42 LR A,2 This square
664 136D 8E ADC
665 136E 16 LM Get square displacement
666 136F 0F LR DC,Q Recall the location for the input
667 1370 8E ADC This is the square position
668 1371 44 LR A,4 Identify type of piece
669 1372 F4 NS 4
670 1373 91 11 BM PUTK To put down a king
671 1375 74 LIS H'4' Prepare for a piece
672 1376 55 LR 5,A To count lines
673 1377 20 20 LI H'20' Skip the rst 4 lines (4*8)
674 1379 8E ADC
675 137A 2C XDC
676 137B 2A 15 CB DCI BLKP Anticipate a black piece
677 137E 84 0E BZ PUTL A black piece (status bit still ok
678 1380 2A 15 C6 DCI REDP No, it's a red piece
679 1383 90 09 BR PUTL
680 1385 72 PUTK LIS H'2' Only 3 lines for a crown
681 1386 55 LR 5,A
682 1387 78 LIS H'8' To skip 1 line
683 1388 8E ADC
684 1389 2C XDC
685 138A 2A 15 C3 DCI KING
686 138D 16 PUTL LM Put loop
687 138E 2C XDC
688 138F 17 ST
689 1390 77 LIS H'7' To next line on screen (less incre
690 1391 8E ADC
691 1392 2C XDC
692 1393 35 DS 5
693 1394 81 F8 BP PUTL Loop
694 1396 32 MEN9 DS 2
695 1397 91 07 BM ME10
696 1399 40 LR A,0
697 139A F0 NS 0
698 139B 94 C6 BNZ MEN6 Shift right if COL0 is FF
699 139D 90 B4 BR MEN3 Shift left if COL0 is 0
700 139F 31 ME10 DS 1
701 13A0 81 9A BP MEN2
702 13A2 44 LR A,4
703 13A3 F4 NS 4
704 13A4 91 0D BM BDEX Exit from board routine
705 13A6 34 DS 4
706 13A7 81 8D BP MEN1 Go round again for black pieces
707 13A9 64 LISU H'4' Get set for kings
708 13AA 40 LR A,0
709 13AB F0 NS 0
710 13AC 6B LISL H'3' Decrementing case
711 13AD 94 87 BNZ MEN1 Dedrement and shift right if COL0
712 13AF 68 LISL H'0' Incrementing case
713 13B0 90 84 BR MEN1 Increment and shift left if COL0 i
714 13B2 0C BDEX PK
715 *-*-*-*-*-*-*-*-*-*-*-*-*-*
716 * SURP SETS UM1 REGS & PTRS
717 *
718 13B3 08 SURP LR K,P SAVE RETURN ADDRESS
719 13B4 28 40 A9 PI PUSH AND PUSH IT ONTO STACK
720 13B7 28 47 62 PI CLER CLER UM1 REGISTERS
721 13BA 2A 0F FA DCI UPI DCO TO UPDATE CONTROLS
722 13BD 73 LIS H'3'
723 13BE 17 ST SET INTO COUNT
724 13BF 70 CLR
725 13C0 17 ST SET FOR FULL INIT
726 13C1 20 15 LI INIT:
727 13C3 17 ST
728 13C4 20 95 LI INIT.
729 13C6 17 ST AND SET ADDRESS
730 13C7 28 16 2E PI MWAD WAIT, THEN UPDATE
731 13CA 75 LIS H'5'
732 13CB 5C LR S,A GET TRANSFER COUNT
733 13CC 2A 13 D9 DCI BDAT SET SOURCE
734 13CF 2C XDC INTO DC1
735 13D0 2A 0F FB DCI UPI+1 DESTINATION
736 13D3 28 43 CD PI TRAN TRANSFER DATA
737 13D6 29 41 CC JMP WAU1 WAIT, DO UPDATE, RESET ISAR&RET.
738 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
739 * UPDATE CONTROL DATA *
740 *
741 13D9 01 BDAT DC H'1' FLAG SET SHORT UPDATE
742 13DA 15 DC UDIT:
743 13DB AA DC UDIT.
744 13DC 15 DC UDIT:
745 13DD AA DC UDIT.
746 *-*-*- SEDC TABL CURS BYDT MVC AMD BLNK
747 * Set message length and line pointer
748 13DE 2A 0F DF SEDC DCI LINE DCO TO LINE POINTER
749 13E1 72 LIS H'2'
750 13E2 15 SL 4 SET FOR SECOND LINE
751 13E3 17 ST
752 13E4 40 LR A,0
753 13E5 15 SL 4
754 13E6 6C LISL 4
755 13E7 5C LR S,A AND SET MESSAGE LENGTH
756 13E8 70 CLR CLEAR ACC
757 13E9 51 LR 1,A AND SET DEFAULT RESULT
758 13EA 1C POP N RETURN
759 *-*-*- Address table for MVC*
760 13EB 0C 30 TABL DC H'0C30'
761 13ED 0C 80 DC H'0C80'
762 13EF 0C D0 DC H'0CD0'
763 13F1 0D 20 DC H'0D20'
764 13F3 0D 70 DC H'0D70'
765 13F5 0D C0 DC H'0DC0'
766 13F7 0F 10 DC H'0F10'
767 13F9 0F 60 DC H'0F60'
768 *-*-*- To move cursor, uses
769 *SC0,1,2,3,4,HU,Q,K,W, SC20-24.
770 13FB 08 CURS LR K,P SAVE RETURN ADDRESS
771 13FC 28 40 A9 PI PUSH AND PUSH IT ON TO STACK
772 13FF 28 17 16 PI DAI DISABLE INTERRUPT DRIVEN UPDATE
773 1402 28 16 2E MAP0 PI MWAD WAIT, THEN UPDATE
774 1405 71 LIS H'1' YES, CAN START JOYREAD
775 1406 5A LR HU,A SET FOR HORIZONTAL POT
776 1407 28 21 AD PI JOYI AND READ
777 140A 53 LR VX,A SAVE RESULT IN VX
778 140B 70 LIS H'0'
779 140C 5A LR HU,A SET FOR VERTICAL POT
780 140D 28 21 AD PI JOYI
781 1410 50 LR 0,A SAVE IN REG 0
782 1411 28 15 46 PI AMAP CONVERT TO PROPER VELOCITY
783 1414 54 LR VY,A SAVE RESULT
784 1415 43 LR A,VX
785 1416 50 LR 0,A NOW GET UNCOVERTED VX INTO R0
786 1417 28 15 46 PI AMAP CONVERT IT
787 141A 53 LR VX,A AND SAVE IT
788 141B 28 16 2E PI MWAD WAIT, THEN UPDATE
789 141E 28 15 56 PI BLNK To blink code (on)
790 1421 74 LIS H'4'
791 1422 50 LR 0,A
792 1423 28 16 2E MP01 PI MWAD
793 1426 30 DS 0
794 1427 94 FB BNZ MP01
795 1429 28 15 56 PI BLNK To blink code (off)
796 142C 70 CLR CLEAR ACC
797 142D E3 XS VX VX IN W/STATUS
798 142E 84 49 BZ MAP7 NON-NULL X COMPONENT?
799 1430 2A 0C 23 DCI XPOS YES
800 1433 16 LM
801 1434 51 LR X,A SET CURRENT X POSITION
802 1435 62 LISU 2
803 1436 68 LISL 0
804 1437 70 CLR
805 1438 5D LR I,A SP20<=0
806 1439 16 LM
807 143A 5D LR I,A SP21<=NON NULL LEAD MASK
808 143B 16 LM
809 143C 5C LR S,A SP22<=TRAILING MASK
810 143D 70 CLR
811 143E E3 XS VX VX IN W/STATUS
812 143F 91 10 BM MAP3 GOING LEFT?
813 1441 28 27 D3 PI SHR SHIFT RIGHT ONE
814 1444 77 LIS H'7' NO, GOING RIGHT.
815 1445 E1 XS X
816 1446 94 24 BNZ MAP5 IN RH MOST BOX?
817 1448 6A LISL 2 YES
818 1449 EC XS S
819 144A 84 20 BZ MAP5 TRIED TO GO TOO FAR?
820 144C 70 MAP2 CLR YES.
821 144D 53 LR VX,A CLEAR X VELOCITY
822 144E 90 29 BR MAP7 AND CHECK Y
823 1450 28 27 C6 MAP3 PI SHL SHIFT LEFT ONE
824 1453 70 CLR
825 1454 E1 XS X
826 1455 94 05 BNZ MAP4 IN LH MOST BOX?
827 1457 68 LISL 0 YES
828 1458 EC XS S
829 1459 94 F2 BNZ MAP2 TRIED TO GO TOO FAR?
830 145B 68 MAP4 LISL 0
831 145C 70 CLR
832 145D EC XS S
833 145E 84 19 BZ MAP7 IS SP20 NULL?
834 1460 69 LISL 1 NO.
835 1461 4D LR A,I
836 1462 5C LR S,A
837 1463 68 LISL 0
838 1464 4D LR A,I
839 1465 5E LR D,A
840 1466 70 CLR
841 1467 5C LR S,A SP22<=SP21,SP21<=SP20,SP20<=0,THAT ORDER
842 1468 31 DS X AND DECREMENT X COUNT
843 1469 90 0E BR MAP7 NOW GO CHECK Y
844 146B 69 MAP5 LISL 1
845 146C 70 CLR CLEAR ACC
846 146D EC XS S
847 146E 94 09 BNZ MAP7 IS SP21=0?
848 1470 6A LISL 2
849 1471 4E LR A,D
850 1472 5D LR I,A
851 1473 70 CLR
852 1474 5E LR D,A SP21<=SP22,SP22<=0, THAT ORDER
853 1475 71 LIS H'1'
854 1476 C1 AS X
855 1477 51 LR X,A INCREMENT X COUNT
856 1478 70 MAP7 CLR
857 1479 E4 XS VY
858 147A 84 10 BZ MAP9 VY=0?
859 147C 2A 0C 26 DCI YPOS NO, SET DCO TO LAST Y POSITION
860 147F 88 AM UPDATE Y COORD
861 1480 91 05 BM MP7A Result Y is neg?
862 1482 25 4D CI MAXY COMPARE W/MAX ALLOWED Y
863 1484 82 05 BC MAP8 NEW Y>MAX ALLOWED VALUE?
864 1486 70 MP7A CLR YES
865 1487 54 LR VY,A RESET VY
866 1488 90 02 BR MAP9
867 148A 52 MAP8 LR Y,A SET NEW Y
868 148B 44 MAP9 LR A,VY GET VY
869 148C 13 SL 1
870 148D E3 XS VX
871 148E 84 1E BZ MP12 ANY MOVEMENT?
872 1490 28 15 0A PI MVC YES, REMOVE OLD POSITION
873 1493 70 CLR
874 1494 E4 XS VY
875 1495 84 0A BZ MP10 ANY Y MOVEMENT?IF NOT, MUST HAVE VX NE 0
876 1497 2A 0C 26 DCI YPOS
877 149A 42 LR A,Y IS, SO RESET
878 149B 17 ST Y POSITION
879 149C 70 CLR
880 149D E3 XS VX
881 149E 84 0B BZ MP11 ANY X MOVEMENT?
882 14A0 2A 0C 23 MP10 DCI XPOS UPDATE X POSIT & MASK
883 14A3 41 LR A,X
884 14A4 17 ST
885 14A5 69 LISL 1
886 14A6 4D LR A,I
887 14A7 17 ST
888 14A8 4C LR A,S
889 14A9 17 ST
890 14AA 28 15 0A MP11 PI MVC DISPLAY NEW POSITION
891 14AD 70 MP12 CLR
892 14AE B1 OUTS 1 Clear port 1
893 14AF 2B NOP 3 NOP's for FCC
894 14B0 2B NOP Do not remove
895 14B1 2B NOP for any reason
896 14B2 A1 INS 1 Get buttons
897 14B3 21 01 NI H'1' Strip to desired one
898 14B5 2A 0C 27 DCI BFLG To button flag
899 14B8 70 CLR
900 14B9 94 05 BNZ MP13 Any button input?
901 14BB 17 ST No, reset edge flag
902 14BC 29 14 02 MP14 JMP MAP0 And go try again
903 14BF 0E MP13 LR Q,DC Save address
904 14C0 8C XM Flag in W/STATUS
905 14C1 94 FA BNZ MP14 Previous input?
906 14C3 71 LIS H'1' No, reset flag
907 14C4 0F LR DC,Q Recover address
908 14C5 17 ST And reset
909 14C6 70 CON CLR
910 14C7 50 LR 0,A Set counter (Y conversion)
911 14C8 42 CON1 LR A,Y Get Y coordinate
912 14C9 25 09 CI YTST Compare W/test value
913 14CB 82 0A BC CON2 Y LE test value?
914 14CD 40 LR A,0 No, increment counter
915 14CE 1F INC
916 14CF 50 LR 0,A
917 14D0 20 F6 LI -H'A'
918 14D2 C2 AS Y
919 14D3 52 LR Y,A Y←Y-H'A'
920 14D4 90 F3 BR CON1 Go back and try agian
921 14D6 40 CON2 LR A,0 Get counter
922 14D7 52 LR Y,A Y now (0-7):(top-bottom)
923 14D8 C1 AS X
924 14D9 21 01 NI H'1'
925 14DB 84 E0 BZ MP14 On a legal square?
926 14DD 2A 0C 21 DCI COL0 Yes
927 14E0 70 CLR
928 14E1 8C XM Flag in W/STATUS
929 14E2 81 07 BP CON3 Machine plays RED?
930 14E4 77 LIS H'7' Yes
931 14E5 E2 XS Y
932 14E6 52 LR Y,A Y←7-Y
933 14E7 77 LIS H'7'
934 14E8 E1 XS X
935 14E9 51 LR X,A X←7-X
936 14EA 42 CON3 LR A,Y
937 14EB 12 SR 1
938 14EC 54 LR VY,A VY reg (BYTENO)←(1/2*(7-Y)
939 14ED 2A 15 02 DCI BYDT To BYTE data
940 14F0 41 LR A,X Get X coord.
941 14F1 8E ADC Add offset to base address
942 14F2 16 LM Get byte
943 14F3 53 LR VX,A Save byte into VX reg
944 14F4 2B NOP
945 14F5 2B NOP
946 14F6 2B NOP
947 14F7 2B NOP
948 14F8 28 16 2E PI MWAD WAIT, THEN UPDATE
949 14FB 28 16 F9 PI ENIN ENABLE INTERRUPT DRIVEN UPDATE
950 14FE 28 40 BC PI POPS POP RETURN ADDRESS
951 1501 0C PK AND RETURN
952 *-*-*- Data for byte values (X coord. conversions)
953 1502 08 80 BYDT DC H'0880'
954 1504 04 40 DC H'0440'
955 1506 02 20 DC H'0220'
956 1508 01 10 DC H'0110'
957 *-*-*- MVC Set or remove cursor
958 150A 08 MVC LR K,P SAVE RETURN ADDRESS
959 150B 2A 0C 23 DCI XPOS
960 150E 16 LM
961 150F 50 LR 0,A SAVE X IN R0
962 1510 62 LISU 2
963 1511 6B LISL 3
964 1512 16 LM
965 1513 5D LR I,A
966 1514 16 LM
967 1515 5E LR D,A LEAD IN SP23,TRAIL IN SP24
968 1516 25 26 CI YPOS
969 1518 16 LM GET Y COORDINATE
970 1519 2A 0C 30 DCI H'0C30' DCO TO OBJ0 BASE ADDRESS
971 151C 8E ADC ADD 8 X Y COORD (W/MAX FOR Y
972 151D 8E ADC OVER H'40', CANNOT USE "CUTE"
973 151E 8E ADC TRICKS HERE--AND FOR SPEED,
974 151F 8E ADC WE JUST USE STRAIGHT ADC'S).
975 1520 8E ADC
976 1521 8E ADC
977 1522 8E ADC
978 1523 8E ADC
979 1524 40 LR A,0 GET X OFFSET
980 1525 8E ADC AND ADD IT IN
981 1526 73 LIS CHT
982 1527 50 LR 0,A SET COUNT FOR TRANSFER
983 1528 0E MVC1 LR Q,DC SAVE ADDRESS IN Q REG
984 1529 02 LR A,QU GET HO ADDRESS
985 152A 25 0E CI H'E'
986 152C 94 09 BNZ MVC2 AT BOTTOM OF OBJ0
987 152E 03 LR A,QL DEFINITELY.
988 152F 25 0F CI H'F'
989 1531 82 04 BC MVC2 PAST BOTTOM?
990 1533 7F LIS H'F' YES.
991 1534 06 LR QU,A RESET HO ADDRESS
992 1535 0F LR DC,Q AND RESET DCO ACCORDINGLY (FOR OBJ1)
993 1536 4D MVC2 LR A,I GET LEAD MASK BYTE
994 1537 0E LR Q,DC SAVE DCO
995 1538 8C XM XOR IN CURSOR
996 1539 0F LR DC,Q RECOVER ADDRESS
997 153A 17 ST AND RESET THAT BYTE
998 153B 0E LR Q,DC SAVE ADDRESS AGAIN
999 153C 4E LR A,D GET TRAILING MASK BYTE
1000 153D 8C XM XOR IN BITS
1001 153E 0F LR DC,Q RECOVER ADDRESS
1002 153F 17 ST AND RESET DATA
1003 1540 76 LIS H'6'
1004 1541 8E ADC SET TO NEXT DESTINATION
1005 1542 30 DS 0 DECREMENT COUNTER
1006 1543 94 E4 BNZ MVC1 DONE?
1007 1545 0C PK YES, RETURN
1008 *-*-*- AMAP Mapping joystick readings to velocities
1009 1546 40 AMAP LR A,0 GET READING
1010 1547 25 02 CI H'2'
1011 1549 92 05 BNC AMP1 VAL LE H'1'?
1012 154B 20 FF LI H'FF' YES.
1013 154D 90 07 BR AMP2
1014 154F 25 C6 AMP1 CI H'C6'
1015 1551 70 CLR
1016 1552 82 02 BC AMP2 VAL GT 197?
1017 1554 71 LIS H'1' YES, VELOCITY = 1
1018 1555 1C AMP2 POP RETURN
1019 *-*-*- BLNK Blinking routine
1020 1556 08 BLNK LR K,P
1021 1557 2A 0C 28 DCI BLNF Test BLINK flag
**OPERATOR SYNTAX LINE # 1022
1022
1023 155A 70 CLR
1024 155B 8C XM
1025 155C 84 37 BZ BLN4 Need to blink?
1026 155E 62 LISU 2
1027 155F 6B LISL 3
1028 1560 16 LM Yes
1029 1561 5D LR I,A Get X value
1030 1562 16 LM
1031 1563 5E LR D,A and Y value to blink
1032 1564 2A 0C 21 DCI COL0
1033 1567 70 CLR
1034 1568 8C XM
1035 1569 84 07 BZ BLN0 Need to reverse?
1036 156B 77 LIS H'7'
1037 156C EC XS S
1038 156D 5D LR I,A
1039 156E 77 LIS H'7'
1040 156F EC XS S
1041 1570 5E LR D,A
1042 1571 2A 0B E0 BLN0 DCI H'0C30'-H'50' DC0 TO OBJ0-H'50'
1043 1574 6C LISL 4
1044 1575 75 LIS H'5'
1045 1576 15 SL 4
1046 1577 8E BLN1 ADC Add off-set
1047 1578 3C DS S
1048 1579 81 FD BP BLN1 Added enough?
1049 157B 0E LR Q,DC Yes
1050 157C 02 LR A,QU Get H0 address
1051 157D 25 0E CI H'E'
1052 157F 94 03 BNZ BLN2 Need reset?
1053 1581 7F LIS H'F' Yes
1054 1582 06 LR QU,A
1055 1583 0F BLN2 LR DC,Q
1056 1584 6B LISL 3
1057 1585 4C LR A,S
1058 1586 8E ADC Add off-set
1059 1587 73 LIS H'3'
1060 1588 50 LR 0,A Set counter
1061 1589 0E BLN3 LR Q,DC
1062 158A 20 C0 LI H'C0'
1063 158C 8C XM
1064 158D 0F LR DC,Q
1065 158E 17 ST
1066 158F 77 LIS H'7'
1067 1590 8E ADC Next one to blink
1068 1591 30 DS 0 Decrement counter
1069 1592 94 F6 BNZ BLN3 Done?
1070 1594 0C BLN4 PK
1071 *-*-*- INIT TYO UDIT TAB1 TAB2 KING REDP BLKP POIN YMF SKL
1072 1595 30 INIT DC H'30' OBJ0 L.O.RP
1073 1596 10 DC H'10' OBJ1 L.O. RP
1074 1597 5F DC H'5F' TEXT LOW ORDER ROM
1075 1598 8C DC H'8C' OBJ0 H.O.RP+COLOR
1076 1599 8F DC H'8F' OBJ1 H.O.RP
1077 159A EE DC H'EE'
1078 159B 48 DC H'48' OBJ0 DELTA X ---
1079 159C 48 DC H'48' OBJ1 DELTA X---
1080 159D 70 DC H'70' TEXT OBJECT DELTA X
1081 159E 3C TY0 DC H'3C' OBJ0 DELTA Y ----
1082 159F 14 DC H'14' OBJ1 DELTA Y ---
1083 15A0 07 DC H'07' TEXT OBJECT DELTA Y
1084 15A1 0D DC H'0D' OBJ0-X-CO
1085 15A2 0D DC H'0D' OBJ1 X-CO
1086 15A3 0D DC H'0D' TEXT OBJECT X COORD
1087 15A4 48 DC H'48' OBJ0 Y-VALUE L.O.A
1088 15A5 C0 DC H'C0' OBJ1 Y-VALUE L.O.A
1089 15A6 26 DC H'26' TEXT OBJECT Y VAL LO A
1090 15A7 00 DC H'00' OBJ0 Y-VALUE H.0 &X-ORDER
1091 15A8 01 DC H'01' OBJ1- Y-VAL H.O.$X-ORDER
1092 15A9 82 DC H'82' TEXT OBJ INITIALLY OFF
1093 15AA 30 UDIT DC H'30'
1094 15AB 10 DC H'10'
1095 15AC 5F DC H'5F'
1096 15AD 8C DC H'8C'
1097 15AE 8F DC H'8F'
1098 15AF EE DC H'EE'
1099 15B0 3C DC H'3C'
1100 15B1 14 DC H'14'
1101 15B2 07 DC H'07'
1102 15B3 0F 10 TAB1 DC H'0F10' BYTE 3
1103 15B5 0D 70 DC H'0D70' BYTE 2
1104 15B7 0C D0 DC H'0CD0' BYTE 1
1105 15B9 0C 30 DC H'0C30' BYTE 0
1106 15BB 56 TAB2 DC D'86' RELATIVE SQUARE POSITION TABLE
1107 15BC 54 DC D'84'
1108 15BD 52 DC D'82'
1109 15BE 50 DC D'80'
1110 15BF 07 DC D'07'
1111 15C0 05 DC D'05'
1112 15C1 03 DC D'03'
1113 15C2 01 DC D'01'
1114 15C3 5A KING DC B'01011010' KING'S CROWN
1115 15C4 3C DC B'00111100'
1116 15C5 18 DC B'00011000'
1117 15C6 3C REDP DC B'00111100' RED PIECE
1118 15C7 7E DC B'01111110'
1119 15C8 7E DC B'01111110'
1120 15C9 7E DC B'01111110'
1121 15CA 3C DC B'00111100'
1122 15CB 3C BLKP DC B'00111100' BLACK PIECE
1123 15CC 42 DC B'01000010'
1124 15CD 42 DC B'01000010'
1125 15CE 42 DC B'01000010'
1126 15CF 3C DC B'00111100'
1127 15D0 0C POIN DC B'00001100'
1128 15D1 06 DC B'00000110'
1129 15D2 03 DC B'00000011'
1130 15D3 01 DC B'00000001'
1131 *-*-*- YMF
1132 15D4 05 13 YMF DC H'0513' Y0ur move
1133 15D6 03 00 DC H'0300' U-
1134 15D8 29 13 DC H'2913' MO
1135 15DA 2F 0B DC H'2F0B' VE
1136 15DC 00 DC H'00' -
1137 15DD 1D DC H'1D' F
1138 15DE 01 09 DC H'0109' IR
1139 15E0 21 07 DC H'2107' ST
1140 15E2 00 DC H'00' -
1141 15E3 35 DC H'35' ?
1142 15E4 00 DC H'00' -
1143 15E5 00 DC H'00' -
1144 15E6 00 DC H'00' -
1145 15E7 00 DC H'00' -
1146 15E8 05 00 DC H'0500' Y-
1147 15EA 13 09 DC H'1309' OR
1148 15EC 00 DC H'00' -
1149 15ED 2B DC H'2B' N
1150 *-*-*-*-*-*-*-*-*-*-*-*-*-
1151 *-*-*- SKL Skill text
1152 15EE 31 19 SKL DC H'3119' CHoose key
1153 15F0 13 13 DC H'1313' OO
1154 15F2 21 0B DC H'210B' SE
1155 15F4 00 DC H'00' -
1156 15F5 00 DC H'00' -
1157 15F6 00 DC H'00' -
1158 15F7 00 DC H'00' -
1159 15F8 15 0B DC H'150B' KE
1160 15FA 05 00 DC H'0500' Y-
1161 15FC 00 DC H'00' -
1162 15FD 00 DC H'00' -
1163 15FE 07 13 DC H'0713' TOm
1164 1600 29 00 DC H'2900' M-
1165 1602 00 DC H'00' -
1166 1603 00 DC H'00' -
1167 1604 00 DC H'00' -
1168 1605 00 DC H'00' -
1169 1606 00 DC H'00' -
1170 1607 00 DC H'00' -
1171 1608 00 DC H'00' -
1172 1609 07 DC H'07' T
1173 160A 00 DC H'00' -
1174 160B 00 DC H'00' -
1175 160C 00 DC H'00' -
1176 160D 00 DC H'00' -
1177 160E 1F 01 DICK DC H'1F01' DIck
1178 1610 31 15 DC H'3115' CK
1179 1612 00 DC H'00' -
1180 1613 00 DC H'00' -
1181 1614 00 DC H'00' -
1182 1615 00 DC H'00' -
1183 1616 00 DC H'00' -
1184 1617 00 DC H'00' -
1185 1618 00 DC H'00' -
1186 1619 1F DC H'1F' D
1187 161A 00 DC H'00' -
1188 161B 00 DC H'00' -
1189 161C 00 DC H'00' -
1190 161D 00 DC H'00' -
1191 161E 19 11 HARY DC H'1911' HArry
1192 1620 09 09 DC H'0909' RR
1193 1622 05 00 DC H'0500' Y-
1194 1624 00 DC H'00' -
1195 1625 00 DC H'00' -
1196 1626 00 DC H'00' -
1197 1627 00 DC H'00' -
1198 1628 00 DC H'00' -
1199 1629 19 DC H'19' H
1200 162A 00 DC H'00' -
1201 162B 00 DC H'00' -
1202 162C 00 DC H'00' -
1203 162D 00 DC H'00' -
1204 *-*-*-*- MAUD WAIT, THEMN UPDATE, ANND KEEP THE
1205 * XZOOM BIT SET PROPERLY DURING DISPLAY MAINTENANCE
1206 162E 08 MWAD LR K,P
1207 162F 28 40 A9 PI PUSH
1208 1632 28 45 01 PI WAIT
1209 1635 2A 0F EA DCI CMRG DCO TO RPOG COPY COMREG
1210 1638 20 01 LI MSK MASK IN
1211 163A 8C XM TURN OFF ZOOM
1212 163B 2A 08 F7 DCI H'8F7' IN THE UM1 COPY
1213 163E 17 ST ONLY
1214 163F 28 42 4D PI UDAT NOW DO UPDATE
1215 1642 20 34 LI XZOP SET LINE FOR RESTORE ZOOM
1216 1644 2A 08 FB MWD1 DCI H'8FB' DCO TO CURRENT LINE
1217 1647 8D CM COMPARE
1218 1648 94 FB BNZ MWD1 REACHED IT YET?
1219 164A 2A 0F EA DCI CMRG YES
1220 164D 16 LM
1221 164E 2A 08 F7 DCI H'8F7' NOW RESET UM1 COPY
1222 1651 17 ST
1223 1652 28 40 BC PI POPS POP RETURN ADDRESS
1224 1655 0C PK AND RETURN
1225 ORG H'1680' INHR ENIN DAI SCRD
1226 *-*-INHR Interrupt handler, saves and restores data
1227 1680 58 INHR LR 8,A SAVE ACC
1228 1681 0A LR A,IS
1229 1682 66 LISU O'6'
1230 1683 68 LISL O'0'
1231 1684 5D LR I,A SAVE A IN REG24
1232 1685 02 LR A,QU
1233 1686 5D LR I,A SAVE QU IN REG25
1234 1687 03 LR A,QL
1235 1688 5D LR I,A SAVE QL IN REG26
1236 1689 49 LR A,J
1237 168A 5D LR I,A SAV IN REG27
1238 168B 2C XDC
1239 168C 0E LR Q,DC GET DC
1240 168D 2A 0F B0 DCI H'0FB0' GET FREE RAM ADDR.
1241 1690 02 LR A,QU SAVE ORIGINAL DC1
1242 1691 17 ST
1243 1692 03 LR A,QL
1244 1693 17 ST
1245 1694 2C XDC
1246 1695 0E LR Q,DC
1247 1696 2C XDC
1248 1697 00 LR A,KU
1249 1698 17 ST
1250 1699 01 LR A,KL
1251 169A 17 ST SAVE KL
1252 169B 4A LR A,HU UPPER H
1253 169C 17 ST SAVE IT
1254 169D 4B LR A,HL
1255 169E 17 ST SAVE H
1256 169F 1E LR J,W
1257 16A0 49 LR A,J
1258 16A1 17 ST SAVE W
1259 16A2 08 LR K,P
1260 16A3 00 LR A,KU
1261 16A4 17 ST SAVE PCU
1262 16A5 01 LR A,KL
1263 16A6 17 ST SAVE PCL
1264 16A7 02 LR A,QU SAVE DC0 ORIGINAL
1265 16A8 17 ST
1266 16A9 03 LR A,QL
1267 16AA 17 ST
1268 16AB 2A 0F EA DCI CMRG
1269 16AE 20 01 LI MSK
1270 16B0 8C XM
1271 16B1 2A 08 F7 DCI H'8F7'
1272 16B4 17 ST
1273 16B5 28 42 4D PI UDAT UPTE DISPLAY
1274 16B8 20 34 LI XZOP
1275 16BA 2A 08 FB INH1 DCI H'8FB'
1276 16BD 8D CM
1277 16BE 94 FB BNZ INH1
1278 16C0 2A 0F EA DCI CMRG
1279 16C3 16 LM
1280 16C4 2A 08 F7 DCI H'8F7'
1281 16C7 17 ST
1282 *
1283 * RESTORE ALL REGISTERS
1284 *
1285 16C8 2A 0F B0 DCI H'0FB0'
1286 16CB 16 LM
1287 16CC 06 LR QU,A GET DC1
1288 16CD 16 LM
1289 16CE 07 LR QL,A
1290 16CF 2C XDC
1291 16D0 0F LR DC,Q RESTORE DC1
1292 16D1 2C XDC
1293 16D2 72 LIS H'2'
1294 16D3 8E ADC BYPASS 'K' SAVED AREA
1295 16D4 16 LM GET HU
1296 16D5 5A LR HU,A RESTORE HU
1297 16D6 16 LM
1298 16D7 5B LR HL,A RESTORE HL
1299 16D8 16 LM GET W
1300 16D9 59 LR J,A
1301 16DA 1D LR W,J RESTORE IT
1302 16DB 16 LM GET PC1 HO
1303 16DC 04 LR KU,A
1304 16DD 16 LM
1305 16DE 05 LR KL,A
1306 16DF 09 LR P,K RESTORE PC1
1307 16E0 16 LM
1308 16E1 06 LR QU,A
1309 16E2 16 LM
1310 16E3 07 LR QL,A
1311 16E4 2A 0F B2 DCI H'FB2' PT TO K
1312 16E7 16 LM GET KU
1313 16E8 04 LR KU,A
1314 16E9 16 LM
1315 16EA 05 LR KL,A RESTORE K
1316 16EB 0F LR DC,Q RESTORE DC0
1317 *
1318 * NOW RESTORE J,Q,A FROM SCRATCH PAD
1319 *
1320 16EC 66 LISU O'6'
1321 16ED 6B LISL O'3'
1322 16EE 4E LR A,D GET J
1323 16EF 59 LR J,A
1324 16F0 4E LR A,D GET QL
1325 16F1 07 LR QL,A
1326 16F2 4E LR A,D
1327 16F3 06 LR QU,A RESTORE QU
1328 16F4 4E LR A,D GET ISAR
1329 16F5 0B LR IS,A RESTORE ISAR
1330 16F6 48 LR A,8 RESTORE A
1331 16F7 1B EI INT. ENABLE
1332 16F8 1C POP
1333 *-*-*- Interrupt enable for update
1334 16F9 20 16 ENIN LI INHR:
1335 16FB BC OUTS H'C'
1336 16FC 20 80 LI INHR.
1337 16FE BD OUTS H'D' SET INTERRUPT VECTOR
1338 16FF 2A 08 F0 DCI H'8F0'
1339 1702 20 F5 LI ULIN
1340 1704 17 ST SET INTERRUPT LINE
1341 1705 2A 0F EA DCI CMRG DCO TO PROG COPY COMREG
1342 1708 0E LR Q,DC SAVE ADDRESS IN Q RES
1343 1709 78 LIS H'8'
1344 170A 8B OM
1345 170B 0F LR DC,Q
1346 170C 17 ST IN PROGRAM COPY
1347 170D 2A 08 F7 DCI H'8F7'
1348 1710 17 ST DITTO UM1 COPY
1349 1711 71 LIS H'1'
1350 1712 BE OUTS H'E' ENABLE SMI...
1351 1713 1B EI ENABLE CPU
1352 1714 1E LR J,W SAVE SAME STATUS
1353 1715 1C POP AND RETURN
1354 *-*-*- Interrupt disable
1355 1716 1A DAI DI DISABLE CPU INTERRUPT
1356 1717 1E LR J,W SET J ACCORDINGLY
1357 1718 2A 0F EA DCI CMRG DCO TO PROG COPY COMREG
1358 171B 0E LR Q,DC SAVE ADDRESS
1359 171C 78 LIS H'8'
1360 171D 18 COM
1361 171E 8A NM TURN OFF BIT
1362 171F 0F LR DC,Q IN THE
1363 1720 17 ST PROGRAM COPY,
1364 1721 2A 08 F7 DCI H'8F7'
1365 1724 17 ST AND THE UM1 COPY
1366 1725 70 CLR
1367 1726 BE OUTS H'E' NOW DISABLE SMI
1368 1727 1C POP AND RETURN
1369 *-*-*- SCRD SC to RAM direct
1370 1728 08 SCRD LR K,P SC TO RAM direct
1371 1729 28 40 A9 PI PUSH
1372 172C 63 LISU PLOC
1373 172D 68 LISL 0
1374 172E 78 LIS H'8'
1375 172F 50 LR 0,A
1376 1730 28 17 3E PI SCRL
1377 1733 64 LISU KLOC
1378 1734 68 LISL 0
1379 1735 78 LIS H'8'
1380 1736 50 LR 0,A
1381 1737 28 17 3E PI SCRL
1382 173A 28 40 BC PI POPS
1383 173D 0C PK
1384 173E 08 SCRL LR K,P Used by SCRA and SCRD
1385 173F 4D SCR3 LR A,I
1386 1740 17 ST
1387 1741 30 DS 0
1388 1742 94 FC BNZ SCR3
1389 1744 0C PK
END
NUMBER OF ERRORS= 2
1
J =0009 VY =0004 VX =0003 HU =000A HL =000B Y =0002
X =0001 ISA =0018 MWAD 162E TRAN =43CD AMAP 1546 UDAT =424D
BDAT 13D9 HSAV =0E59 RKB 12CC TABL 13EB MOBS =0F00 TAB1 15B3
RKB1 12D4 TAB2 15BB WMC 1200 TXC =0FE8 MVC 150A WMCA 1262
SHCB =0FE2 DICK 160E WMC1 1233 MVC1 1528 WMC2 1251 MVC2 1536
SEDC 13DE BRDJ 108D BRDK 109B REDM 12E7 REDP 15C6 BYDT 1502
BRD1 130F MWD1 1644 BRD2 130D BRD3 130B BRD4 130A BRD5 1328
ISE =0029 TREE =0E10 CLER =4762 BDEX 13B2 TRE2 =0E20 TRE3 =0E30
YMF 15D4 WDG =4105 INHR 1680 INH1 16BA DAI 1716 UPI =0FFA
ENIN 16F9 POIN 15D0 ULIN =00F5 WAIT =4501 INIT 1595 UDIT 15AA
OBJ0 =0C30 OBJ1 =0F10 ISK =0020 MSK =0001 BLKM 12E0 BLKP 15CB
SKL 15EE SHL =27C6 BFLG =0C27 SELM 12BD WTLN =0FE5 YBLN =0C2A
XBLN =0C29 SELX =0C22 SELY 12C2 COL0 =0C21 SEL2 =1900 COM =08F7
TFM 129E MJM 1287 MIM 1291 PLMD =0E5B BCMD =006D TCMD =0044
PLMF =0EE0 PCMM 12AD TEMP =0008 PLMV =0ED0 OKMV 115A BKMV =0C2C
MYMV 12A6 YRMV 127D OKM1 1168 OKM2 1172 OKM3 117C OKM4 1186
OKM5 118D OKM6 1197 OKM7 119E CON 14C6 DBNC =0FEB LINE =0FDF
BLNF =0C28 KING 15C3 BLNK 1556 FINM 12C7 NONO 11C6 BCNT =0C2B
BLN0 1571 CON1 14C8 BLN1 1577 MEN1 1335 CON2 14D6 BLN2 1583
NON2 11CF MEN2 133B CON3 14EA BLN3 1589 NON3 11D2 MEN3 1352
BLN4 1594 NON4 11D3 MEN4 1354 NON5 11E2 MEN5 135B MEN6 1362
MEN7 1364 MEN8 1369 MEN9 1396 ELOC =0005 KLOC =0004 PLOC =0003
TCOL =0080 XZOP =0034 YPOS =0C26 XPOS =0C23 PMOV 1100 ISP =001C
INPF =0FE3 OKPI 1115 POPS =40BC MAP0 1402 OKP1 1118 AMP1 154F
OKP2 1124 AMP2 1555 MAP2 144C OKP3 1126 MAP3 1450 OKP4 112D
MAP4 145B MAP5 146B MAP7 1478 MAP8 148A MAP9 148B TIR =45DB
SHR =27D3 BORD 1300 SCRD 1728 CMRG =0FEA SCRL 173E SURP 13B3
CURS 13FB HARY 161E CUR1 1112 CUR2 1150 SCR3 173F WMS =4205
CDS =41D5 IJS =22DB SPS =40D0 FCS =43D6 PUSH =40A9 YTST =0009
MES0 1107 MES1 1108 CHT =0003 PUTK 1385 PUTL 138D WAUD =41C8
WAU1 =41CC MAXY =004D PLYD =00FD PLYH =00FC JOYI =21AD JOYT =0C00
PLYT =00FE PLY0 =0C20 TY0 159E MP01 1423 QN1 1023 QN10 103C
MP10 14A0 ME10 139F QN11 103D MP11 14AA MP12 14AD QN13 1066
MP13 14BF QN14 1068 MP14 14BC QN17 10D6 QN18 10D8 QN19 10DF
MP7A 1486